Method and system for recursive plug-in application recipe generation

ABSTRACT

Techniques for recursively generating a plug-in application recipe (PIAR) are disclosed. A PIAR management application manages a particular PIAR in an active state. The PIAR management application manages PIAR specifications, each identifying a trigger and an action. The action is conditional on the trigger. The particular PIAR includes a particular trigger and a particular action. The particular action includes a child PIAR specification that defines, for a child PIAR, a second trigger and a second action to be executed when the second trigger is satisfied. In response to detecting that the particular trigger is satisfied, the PIAR management application creates the child PIAR. The PIAR management application monitors the second trigger concurrently with the particular trigger, which the PIAR management application did not do before creating the child PIAR.

BENEFIT CLAIMS; RELATED APPLICATIONS; INCORPORATION BY REFERENCE

This application claims the benefit of U.S. Provisional PatentApplication 62/435,843, titled “Method and System for Recursive WorkflowGeneration”, filed Dec. 18, 2016, which is hereby incorporated byreference.

TECHNICAL FIELD

The present disclosure relates to creating plug-in application recipes.

BACKGROUND

A plug-in-application recipe (“PIAR”) may be referred to as a setincluding a triggering event (referred to herein as a “trigger” or“trigger condition”) and an action, arranged logically as an if-thenformulation. The “if” portion of the formulation corresponds to a PIARtrigger condition. The “then” portion of the formulation is conditionedon the “if” portion being satisfied, and corresponds to a triggerableaction. An action may itself be supplied by a plug-in application, whichmay be the same as, or different than, a plug-in application supplying atrigger.

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments are illustrated by way of example and not by way oflimitation in the figures of the accompanying drawings. It should benoted that references to “an” or “one” embodiment in this disclosure arenot necessarily to the same embodiment, and they mean at least one. Inthe drawings:

FIG. 1 is a block diagram illustrating a plug-in application recipemanagement system in accordance with one or more embodiments;

FIG. 2 illustrates operations for recursively generating at least oneplug-in application recipe in accordance with one or more embodiments;

FIG. 3 illustrates an example of recursively generating plug-inapplication recipes in accordance with one or more embodiments.

FIG. 4 illustrates a system in accordance with one or more embodiments.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding. One or more embodiments may be practiced without thesespecific details. Features/components described in one embodiment may becombined with features/components described in a different embodiment.In some examples, well-known structures and devices are described withreference to a block diagram form in order to avoid unnecessarilyobscuring the present invention.

1. GENERAL OVERVIEW

2. PLUG-IN APPLICATION RECIPE MANAGEMENT SYSTEM

3. RECURSIVE PLUG-IN APPLICATION RECIPE GENERATION

4. MISCELLANEOUS; EXTENSIONS

5. HARDWARE OVERVIEW

6. COMPUTER NETWORKS AND CLOUD NETWORKS

1. General Overview

One or more embodiments include techniques for recursively generating aplug-in application recipe (PIAR). A PIAR management application managesa particular PIAR in an active state. The PIAR management applicationmanages PIAR specifications. Each PIAR specification identifies atrigger associated with one or more corresponding trigger variables.Values of the trigger variable(s) are exposed by a first plug-inapplication to the PIAR management application. The values are used toevaluate the trigger on an ongoing basis. An instance of evaluating thetrigger involves determining whether a condition is satisfied based atleast in part on one or more values of the one or more triggervariables. Each PIAR specification further identifies an action forwhich a second plug-in application exposes an interface to the PIARmanagement application for causing the second plug-in application tocarry out the action. An instance of evaluating the action involvescarrying out the action based on one or more values of one or more inputvariables that are input to the action in the PIAR specification. ThePIAR management application makes the action conditional on the triggeron an ongoing basis.

In an embodiment, the particular PIAR specification includes aparticular trigger and a particular action. The particular actionincludes a child PIAR specification that defines, for a child PIAR, asecond trigger and a second action to be executed when the secondtrigger is satisfied. The PIAR management application detects that theparticular trigger is satisfied. In response to detecting that theparticular trigger is satisfied, the PIAR management application createsthe child PIAR. The PIAR management application monitors the secondtrigger concurrently with the particular trigger. Before creating thechild PIAR, the PIAR management application did not monitor the secondtrigger.

2. Plug-In Application Receipe Generation System

FIG. 1 is a block diagram illustrating a plug-in application recipe(PIAR) management system 100 according to an embodiment. The PIARmanagement system 100 includes functionality to recursively generate atleast one PIAR.

As illustrated, the PIAR management system 100 includes a PIARmanagement application 108 and various other components. Embodiments mayinclude more or fewer components than those illustrated. Components maybe implemented in software and/or hardware. Specifically, components maybe implemented on one or more digital devices. The term “digital device”generally refers to any hardware device that includes a processor. Adigital device may refer to a physical device executing an applicationor a virtual machine. Examples of digital devices include a computer, atablet, a laptop, a desktop, a netbook, a server, a web server, anetwork policy server, a proxy server, a generic machine, afunction-specific hardware device, a hardware router, a hardware switch,a hardware firewall, a hardware firewall, a hardware network addresstranslator (NAT), a hardware load balancer, a mainframe, a television, acontent receiver, a set-top box, a printer, a mobile handset, asmartphone, a personal digital assistant (“PDA”), a wireless receiverand/or transmitter, a base station, a communication management device, arouter, a switch, a controller, an access point, and/or a client device.Components may be local to or remote from each other. Each component maybe distributed over multiple applications and/or machines. Multiplecomponents may be combined into one application and/or machine. Two ormore components may be communicatively coupled via a local area network,a wide area network, the internet, an intranet, a cellular network,and/or combinations thereof. Operations described with respect to onecomponent may instead be performed by another component. Additionalembodiments and/or examples relating to computer networks are describedbelow.

As described herein, the term “plug-in application” refers to the factthat an application's trigger(s) and/or action(s) logically ‘plug in’ tothe PIAR and become part of the logic of a PIAR. For example, the PIARmanagement application 108, described in further detail below, may beorganized according to a micro-services architecture, such that severalindependent services are plugged into the PIAR application. Eachplugged-in service may provide monitoring service(s) specific to aparticular application to support trigger(s) for the particularapplication, and/or action service(s) specific to the particularapplication to support executing action(s) for the particularapplication.

In an embodiment, a PIAR management application 108 provides a userinterface 102 for creating a PIAR definition 150. A PIAR definition 150may also be referred to as a PIAR specification. Specifically, the userinterface 102 allows a user to select one or more triggers 104 and oneor more corresponding actions 106 to be executed when the trigger(s) 104are satisfied. As used herein, the trigger(s) 104 and action(s) 106 arereferred to collectively as “operations” of the PIAR. Examples of PIARsinclude, but are not limited to: (a) responsive to detecting that auser's car is in the user's driveway (trigger), opening the user'sgarage door (action); (b) responsive to determining that a user's walkedsteps have not reached a particular goal by 5 p.m. (trigger),transmitting a notification to the user (action); (c) responsive todetecting a new sales contact in an address book or email (trigger),creating a new folder to store information about the sales contact(action). The user interface 102 may be a graphical user interface(GUI), a command line interface, or any other type of interfaceconfigured to receive user input for creating a PIAR definition 150.

In an embodiment, in addition to the trigger(s) 104 and associatedaction(s) 106, the user interface 102 includes options to specify a nameof a PIAR definition, a trigger application that is an application to bemonitored for detection of the trigger(s) 104, and/or an application tobe used to execute the action(s) 106. The name of a particular PIAR maytake many different forms. In an example, PIARs are given numericalnames that correspond to an order in which the PIARs are created. Thefirst PIAR created may be given the name “00001”; the second PIARcreated may be given the name “00002”; and so on. In another example,PIARs are given descriptive names, which may be user-specified (e.g.,“Notify sales when a lead is received”) or systematically generatedbased on properties of the PIAR. One or more of the action(s) 106 mayinvolve generating a new PIAR definition, and one or more of theaction(s) 106 may be executed by the PIAR management application 108itself. Multiple PIARs may have the same descriptive name but differentidentifiers. A PIAR definition 150 may also include information otherthan the trigger(s) 104 and action(s) 106.

In an embodiment, a PIAR may involve multiple actions performed inresponse to detecting a trigger. One or more of the actions may beperformed concurrently or in a fixed sequence. A combination ofconcurrent and/or sequential actions may be used. The output of oneaction may be used as input to another action. For example, suppose aPIAR is created with a trigger defined as receiving an email from aprospective customer (e.g. receiving an email at an email address onlygiven to prospective customers). In this example, a series of actionsperformed in response to receiving the email may include (1) determiningwhether the prospect is already listed in a customer relationshipmanagement (CRM) application, and (2) if the prospect is not alreadylisted in the CRM application, adding the prospect to the CRMapplication and sending a notification email to a sales manager. Addingthe prospect to the CRM application and sending the notification emailto the sales manager may be performed concurrently or in a particularorder. For example, the notification email may be sent only afterreceiving confirmation from the CRM application that the prospect wasadded successfully. Many different combinations of concurrent and/orsequential actions may be used in a PIAR.

In an embodiment, one or more actions in a PIAR may be performedconditionally, based on evaluation of the initiating trigger or, if theaction is part of a series of actions, evaluation of output from apreceding action. For example, conditional logic (e.g., if, then, else,etc.) may be used to determine, in response to detecting a trigger, theparticular sequence of actions, if any, to perform. The PAIR managementsystem 100 may include an interface allowing a user to define suchconditional logic for a particular PIAR. Further, evaluating a triggerand/or output of a preceding action may involve looping through multiplevariable values. For example, a trigger or action may supply an array ofvalues, and evaluating the trigger or action may involve iterativelyevaluating (or “looping through”) each of those values. Looping throughsuch values may itself be subject to conditional logic. Many differentcombinations of conditional logic and/or looping through variables maybe used to determine the particular action(s), if any, performed when atrigger is detected.

In an embodiment, a PIAR definition 150 includes one or more types ofmetadata. For example, metadata may identify a user who created the PIARdefinition 150, a time and date of creation, an authorization level ofthe PIAR definition 150 (for example, whether the action(s) 106 arepermitted to receive personally identifiable information), the plug-inapplication(s) associated with the trigger(s) 104 and/or action(s) 106,or any other type of metadata describing or associated with a PIAR. If aPIAR definition is generated recursively in the course of executinganother PIAR, the recursively generated PIAR may be thought of as a“child” PIAR and the PIAR that generated it may be thought of as a“parent” PIAR. Metadata associated with a child PIAR may includeinformation about the parent PIAR, directly in the child PIAR's metadataand/or by reference to the parent PIAR's metadata.

In an embodiment, the PIAR management system 100 includes one or moreapplications that are linked or ‘plugged in’ to the PIAR managementapplication 108. An application ‘plugged in’ to the PIAR managementapplication 108 may be referred to as a “plug-in application.” Aparticular plug-in application may be used as a “trigger application,”i.e., an application to be monitored for detection of a triggercondition. Alternatively or in addition, a particular plug-inapplication may be used as an “action application,” i.e., an applicationthat executes an action when a trigger condition is satisfied.

In an embodiment, in general, plug-in applications are applications thatare (a) executing independently of the detection process of the PIARmanagement application 108, (b) not being controlled by the detectionprocess of the PIAR management application 108, and/or (c) remote fromthe PIAR management application 108. Thus, the plug-in application,executing independent of the detection process of the PIAR managementapplication 108 that detects the specified trigger(s) 104, may bereferred to herein as an independently executing application. Further,one or more plug-in applications may be considered ‘stand-alone’applications relative to the PIAR management application 108. That is, aplug-in application may provide its own user interface (e.g., a GUI)through which a user accesses the full functionality of the plug-inapplication. In this manner, the plug-in application providesfunctionality entirely independent of the PIAR management application108 and does not depend on the PIAR management application 108 tofunction. A stand-along plug-in application is not a module or componentof the PIAR management application 108. One or more plug-in applicationsand the PIAR management application 108 may be developed and supportedby entirely distinct business entities than each other. As an example,FIG. 1 illustrates plug-in applications that include a searchapplication 110, an email application 112, and an audio playerapplication 114, which are independently executing stand-aloneapplications. Many different types of plug-in applications may be used,and the examples illustrated in FIG. 1 should not be construed aslimiting one or more embodiments.

In an embodiment, the PIAR management application 108 stores PIARdefinitions (e.g., PIAR definition 150) as PIAR definition objects 107.PIAR definitions may also be referred to herein as PIAR specifications.The definition objects 107 may be stored in a database 105, for example,in a file system, or in any other type of digital storage. The PIARmanagement application 108 may also store metadata associated with PIARdefinitions in the database 105 or other storage. The metadata 109 maybe stored within (i.e., as logical components of) definition objects 107or separately. In an embodiment, definition objects 107 are stored inJavaScript Object Notation (JSON) format, with elements in the JSONstructure corresponding to trigger(s) 104, action(s) 106, and/ormetadata 109. The JSON structure may also include one or more elementscorresponding to transformation operations to be applied to variablesassociated with PIAR trigger and/or action operations.

In an embodiment, functionality of a plug-in application that isaccessible to the PIAR management application 108 is a subset of theplug-in application's full functionality. Specifically, a plug-inapplication may expose an application programming interface (API)providing access to certain functions and/or data of the plug-inapplication, without providing access to other functions and/or data ofthe plug-in application. In other words, the functionality exposed tothe PIAR management application 108 may be a proper subset (a.k.a.strict subset) of the plug-in application's full functionality. Forexample, the API may be a restful state transfer (REST) API. Other typesof APIs may be used. As an example, an email application may not exposeemail sending functionality to the PIAR management application 108, butmay expose information about emails that have been received, such as thedate, time, sender, recipient, subject line, and content of the email.As another example, a calendar application may not expose functionalityto cancel events, but may expose information about events that havealready been scheduled (e.g., date, time, location, participants, etc.)and/or functionality to schedule new events. The set of functionalityexposed to the PIAR management application 108 may depend on one or moreauthorization policies. In an embodiment, the PIAR managementapplication 108 stores an authorization token that it uses toauthenticate access to a plug-in application's API. As an example, thePIAR management application 108 may prompt a user, via the userinterface 102, to input a username and password to access an emailapplication's API. The PIAR management application 108 may store theusername and password in an encrypted token that it uses to requestaccess to the exposed functions and/or data of the email application.

In an embodiment, the user interface 102 allows a user to specifytriggers that do not correspond to functions or data natively exposed bya plug-in application. For example, a trigger application may exposedata values that change over time, without natively exposing anyfunctions that monitor or compare the data values as they change. Atrigger may nonetheless be defined for monitoring the triggerapplication for changes in the data values over time. As anotherexample, a trigger may look for an aggregate data value (e.g., summed oraveraged over time or over a number of consecutive data retentions orchanges), or a masked data value (e.g., a data value that indicates thepresence or absence of data or a change in data, even though the dataitself is masked to the PIAR management application 108 or the end user,or is altogether unavailable to the end user). Many different types oftrigger conditions may be inferred, derived, or otherwise determinedfrom a trigger application without being natively supported by thetrigger application.

As an example, a search application 110 may be linked to (plugged into')the PIAR management application 108. Linking the search application 110to the PIAR management application 108 may involve monitoring the searchapplication 110 (e.g., via a REST API) and reporting, to the PIARmanagement application 108, the detection of triggers defined inrelation to the search application 110. For example, a trigger mayinvolve detecting the execution of a search for receipts via the searchapplication 110. The search application 110 may be monitored via acorresponding service 111 that detects when a search for receipts isexecuted via the search application 110. The service 111 notifies thePIAR management application 108 if and when a search for receipts isexecuted via the search application 110. The service 111 may beimplemented separately from the search application 110 or as a component(e.g., an installable module or plug-in) of the search application 110.

As another example, the search application 110 corresponds to a carsales application. A potential customer may search for a car from adatabase of advertised cars and request a meeting with a salesrepresentative to purchase the car. The trigger condition may be definedas receiving a request for a sales meeting from a user that referencesone of the advertised cars.

In an embodiment, a plug-in application includes a monitoring system fornotifying the PIAR management application 108 of predefined triggerconditions, with predefined parameters that may be customizable. Forexample, an application may include a monitoring system that notifiesthe PIAR management application 108 when an application-specific triggersuch as a keyword search on email is satisfied. The application mayallow a limited amount of customization for that application-specifictrigger, allowing customization in some ways (such as specifying thekeyword for the search) without allowing customization in other ways(such as, for example, whether the keyword is within N words of anotherkeyword, or whether information about an earlier email with the keywordhas already been detected and stored in a table).

In an embodiment, monitoring a plug-in application (e.g. using a service111) to identify a triggering event is done on an ongoing basis. Thatis, the monitoring process is initiated and continues to operate until aterminating condition is satisfied. Thus, a particular PIAR may beevaluated and executed many times, in response to many triggering eventsidentified by the associated monitoring process. In general, a PIAR doesnot cease to operate upon the first instance of the selected triggeringevent. For example, a PIAR that opens a garage door in response todetecting a vehicle in the driveway may operate in perpetuity and causethe garage door to open dozens, hundreds, or even thousands of times. Amonitoring process associated with a particular PIAR may operate inperpetuity until it is manually terminated by a user (e.g., via the userinterface 102). Alternatively, a PIAR definition may include aterminating condition, such as a certain length of time to operate or amaximum number of times to perform actions in response to triggers.Typically a PIAR is created with the intent that it functions as anautomated background service, continuing to operate in perpetuity,without further manual intervention.

In an embodiment, the search application 110 (or other applicationplugged into the PIAR management application 108) is not in any wayaffected by the execution of the PIAR management application 108 whichuses at least one of the fields managed by the search application 110for detecting the trigger(s) 104. The PIAR management application 108may correspond to micro-services that provide altogether differentfunctionality than the independently executing search application 110.The PIAR management application 108 may determine that the action(s) 106have been triggered when a change in the field(s) managed by theindependently executing search application 110 satisfy one or morethreshold criteria, such as a certain value or aggregated value. As anexample, a field managed by the search application 110 may specify alocation. Search results associated with the location are to bepresented in response to a query. A change in city may satisfy thethreshold criteria. The threshold criteria specified to the PIARmanagement application 108 may be different than any threshold criteriasupported by the built-in monitoring process(es) of the plug-inapplication, even though the threshold criteria may be based onvariables that are accessible from the plug-in application and eventhough such variables may change over time. A parent PIAR may generate achild PIAR (as discussed below) for the purpose of determining, on anongoing basis, whether a particular threshold criterion is satisfied.The PIAR management application 108 may execute (directly or by causingexecution by another process) the action(s) 106 in response to detectingthat the action(s) 106 have been triggered.

Similar to a trigger application (e.g. search application 110), anaction application (e.g., email application 112 or audio playerapplication 114) is linked or plugged into the PIAR managementapplication 108. An action application is an application that executesan action as directed or requested by the PIAR management application108 (although the PIAR management application 108 may also be said to“execute” the action in the sense that the PIAR management application108 initiates execution of the action). The PIAR management application108 requests execution of actions in response to detection of triggersas described above. The action applications may be linked to the PIARmanagement application 110 via respective services 111. A service 111may be implemented separately from or as a component of an actionapplication. A service 111 may use an application programming interface(API) corresponding to an action application, to use the actionapplication for executing an action according to a PIAR. A particularaction application may also be a trigger application. That is, the sameapplication may expose one or more triggers while also exposing an APIfor executing actions. The same application may be used as both atrigger application and an action application in the same PIAR, or indifferent PIARs.

In an embodiment, the PIAR management application 108 is itself anaction application. The PIAR management application 108 may execute anaction that generates a new PIAR. As an example, a new PIAR may begenerated for managing client purchases. The new PIAR may define atrigger as a first purchase by a client. The new PIAR may define actionssuch as creating a database record for storing records of clientpurchases or creating a product recommendation list based on completedpurchases by the client. Generating a new PIAR as part of a PIAR actionmay be thought of as recursively generating a PIAR. Recursivelygenerating a PIAR is discussed in further detail below.

In an embodiment, the PIAR management application 108 supports PIARdefinitions that involve a series of actions. For example, in responseto a particular trigger, a PIAR may perform a particular action, “ActionA.” The output of Action A may then be used as input to another action,“Action B.” The output of Action B may then be used as input to anotheraction, “Action C,” and so on. Functions and/or data exposed by Action Amay be available as input to Action B and/or as input to subsequentactions, such as Action C. Functions and/or data exposed by a lateraction, such as Action C, may not be available as input to an earlieraction, such as Action B or action A. For example, if Action B completesbefore Action C completes, then it is not possible for Action B toreceive input from Action C.

In an embodiment, the user interface 102 includes options to specify oneor more transformation operations to be applied to one or more variablesused in a PIAR. A transformation operation is an operation that takes aparticular value of a variable and modifies it to obtain a transformedvalue. For example, a transformation operation may concatenate data(e.g., two strings), filter out undesirable data (e.g. inappropriateinformation, or sensitive information such as personally identifiableinformation, convert lowercase to uppercase (or vice versa), transform avariable of one data type to a variable of another data type (e.g., astring to a date or number), or perform any other type of transformationthat may be applied to variables. Embodiments should not be consideredlimited to any particular type of variable or type of transformation.

3. Recursive Plug-In Application Recipe Generation

In an embodiment, the PIAR management application recursively generatesa PIAR via the execution of a PIAR action of an initial PIAR beingexecuted. FIG. 2 includes an example set of operations generating a newPIAR. Other operations not described herein may be used instead and/orin addition to the described operations. One or more operationsillustrated in FIG. 2 may be modified, rearranged, or omittedaltogether. Accordingly, the particular sequence of operationsillustrated in FIG. 2 should not be construed as limiting the scope ofone or more embodiments.

In an embodiment, each of a set of plug-in applications exposes aninterface to a PIAR management application. The interface may be exposedby each of the plug-in applications via a service that is separated fromthe respective linked application or is included as a component of eachrespective linked application. The interface may be used, by the PIARmanagement application, to monitor PIAR triggers corresponding toconditions that may satisfied by a linked application. The interface maybe used, by the PIAR management application, to request a linkedapplication to execute PIAR actions. The linked applications may operateindependently and without control by the PIAR management application.The linked applications may operate independently of each other and/orof the PIAR management application, for example, without having oneapplication control another and/or without having the applicationscontrolled by the PIAR management application. The linked applicationsmay be considered independent even if the applications expose limitedinterfaces for monitoring pre-defined triggers and/or for causingpre-defined actions, so long as the consumer of the interface does notretain any control over (a) how the monitoring is performed, as it isbeing performed, beyond the pre-defined fields that are initiallyprovided, via the interface, to define what is to be monitored, or (b)how the actions are performed, as they are being performed, beyond thepre-defined fields that are initially provided, via the interface, todefine what is to be performed.

The linked applications operate independently of each other and performdifferent monitoring or functionality according to their respectiveexposed interfaces. Although the different applications operateindependent of each other, they may interact with each other through thePIAR management application. For example, a first application may beplugged into the PIAR management application (at least) for monitoringwhether an application-specific condition (specific to the firstapplication) is satisfied, optionally based on criteria provided to thefirst application via an interface exposed by the first application. Asecond application may be plugged into the PIAR management application(at least) for triggering application-specific actions (specific to thesecond application), optionally based on criteria provided to the secondapplication via an interface exposed by the second application. The PIARmanagement application provides a GUI for defining which triggersshould, when activated, cause which actions. In the example, a triggerdefined for the first application may cause an action defined for thesecond application, even though the first and second applicationsotherwise operate independently of each other and do not necessarilyhave any knowledge of each other or any ability to allow or preventother applications from being plugged into the PIAR managementapplication.

In an embodiment, a particular application may be linked to the PIARmanagement application based in part on authentication credentialsreceived by a GUI corresponding to the PIAR management application. Theauthentication credentials may be associated with a particular user of aset of users with user accounts managed by the particular application.Linking the particular application to the PIAR management applicationmay include storing authentication credentials for use in polling theparticular application by the PIAR management application. The PIARmanagement application may poll the particular application to obtaindata corresponding to detection of PIAR triggers. Linking the particularapplication to the PIAR management application may include establishinga reusable data pipeline for transferring data from the particularapplication to the PIAR management application in a continuous,periodic, or sporadic manner.

In an embodiment, the PIAR management application receives, via a GUI,an initial PIAR specification defining (a) a first PIAR trigger and (b)a first PIAR action. The initial PIAR is stored in a PIAR repository.The PIAR management application configures a monitoring service todetect at least one condition corresponding to the first PIAR trigger.The PIAR management application may configure a service to execute themonitoring operation via an interface exposed by the particularapplication.

In an embodiment, the PIAR management application receives, from alinked application, data associated with the first PIAR trigger. ThePIAR management application may receive the data directly from thelinked application or via a separate service configured to monitor theoperations and/or data corresponding to the linked application. The PIARmanagement application may determine, based on the data, whether thefirst PIAR trigger has been satisfied. If the first PIAR trigger has notbeen satisfied, the first PIAR action is not executed. If the first PIARtrigger has been satisfied, then the corresponding first PIAR action isexecuted or caused to be executed by the PIAR management application.One or more portions of the first PIAR action having been defined by aGUI and stored by the PIAR management application, may be available tothe PIAR management application.

In an embodiment, the first PIAR action may include a PIAR specificationthat defines a second PIAR trigger and a second PIAR action. In responseto determining that the first PIAR trigger is satisfied, the PIARmanagement application initiates execution of the corresponding firstPIAR action (Operation 202). The first PIAR action involves generating anew PIAR including (a) the second PIAR trigger and (b) the second PIARaction that is to be executed in response to detecting the second PIARtrigger is satisfied. The PIAR management application may generate thenew PIAR by, for example, using a representational state transfer (REST)Application Programming Interface (API) to create the new PIAR inaccordance with the PIAR specification.

When a first PIAR's action involves generating a new PIAR, the firstPIAR may be referred to as the “parent PIAR” and the new PIAR may bereferred to as the “child PIAR.” Regardless of the specific method(s),discussed herein, that are used to generate the PIAR, the child PIAR'sspecification may include data related to its creation. The child PIAR'sspecification may include data identifying the parent PIAR. In anexample, the child PIAR includes a filed called “parentPIAR,” the valueof which is the name or some other identifier corresponding to theparent PIAR. Identifying the parent PIAR in a child PIAR's specificationmay be useful, for example, for auditing purposes and/or for referencingthe parent PIAR in a child PIAR's action(s). Alternatively or inaddition, the child PIAR may include some or all of the parent PIAR'smetadata. Alternatively or in addition, the child PIAR may include otherinformation about its creation, such as a timestamp of creation, aprocess identifier corresponding to a process that created the childPIAR, an identifier corresponding to a plug-in application thattriggered the child PIAR's creation, etc. Alternatively or in addition,the child PIAR's specification may identify a user whose credentialswere used to generate the child PIAR, e.g., to monitor the parent PIAR'strigger(s). A child PIAR that was generated using one user's credentialsmay be configured to use the same user's credentials and/or a differentuser's credentials. Information about the child PIAR's creation may beused to automate various actions, such as sending an email to anadministrator indicating that that child PIAR was created.

In an embodiment, a child PIAR may itself include an action thatgenerates another child PIAR, for which the first child PIAR isconsidered the parent PIAR. The PIAR management application may supportmany different levels of PIAR “ancestry” in this manner. As with aparent PIAR, a child PIAR may not execute any actions, or cause anyactions to be executed, until one or more trigger conditions aresatisfied. In addition, a child PIAR may be configured to start on aspecific date/time and/or terminate on a specific date/time. A start ortermination date/time may be an absolute date/time (e.g., “Jan. 1, 2018at 12:01 a.m.”) or a relative date/time (e.g., “next Monday at 9:00a.m.” or “in ten days at 11:59 p.m.”). The PIAR management applicationmay terminate a child PIAR on its termination date/time. Alternativelyor in addition, a child PIAR may have a termination condition. In anexample, a child PIAR is configured to execute actions ten times. Thechild PIAR's trigger condition(s) are satisfied ten times and the PIARexecutes the corresponding action(s) each time. The PIAR managementapplication then terminates the child PIAR. In another example, thechild PIAR defines an action to email a user. If the user replies to theemail with the word “unsubscribe,” the PIAR management applicationterminates the child PIAR. The PIAR management application may terminatea child PIAR even if the child PIAR's trigger condition(s) have neverbeen satisfied. A child PIAR may inherit its start and/or terminationcondition(s) from its parent PIAR. A termination condition may alsoinclude instructions to generate a new child PIAR. When the PIARmanagement application terminates the child PIAR, it generates the newchild PIAR according to those instructions. In an example, a parent PIARincludes an action to generate a self-replicating child PIAR with a“life span” of one week. When the child PIAR has been active for oneweek, the PIAR management application terminates the child PIAR andgenerates a new child PIAR that, again, has a “life span” of one week.In an embodiment, by default, a child PIAR does not have a terminationdate/time or termination condition.

In an embodiment, the PIAR management application determines whether theparent PIAR's action specifies the child PIAR with a nativespecification that may be used by the PIAR management application(Operation 204). If a native specification is specified by the parentPIAR's action, then the PIAR management application generates the childPIAR using the native specification (Operation 206). A nativespecification may not necessarily require any conversion operations bythe PIAR management application, prior to storing the nativespecification as a new PIAR in a same PIAR repository as the first PIARand thereby generating the child PIAR. The native specification mayspecify the attributes of a child PIAR including one or more of: PIARtitle, PIAR trigger, trigger application, PIAR action, and actionapplication. Alternatively, minimal conversion may be required togenerate the new PIAR. In an embodiment, the PIAR management applicationgenerates the new PIAR using at least a portion of the informationcorresponding to the first PIAR trigger. As an example, the first PIARtrigger may correspond to a potential client. The name or otherattributes of the potential client (not available prior to theoccurrence of the first PIAR trigger) may be incorporated into thenative specification that is stored in the PIAR repository to generatethe new PIAR. In an embodiment, the PIAR management application, mayreceive instructions via a GUI to automatically generate one or morecomponents of the new PIAR. As an example, the PIAR managementapplication may receive instructions to generate a title for the newPIAR, the title not being explicitly specified by a user. The PIARmanagement application may generate the title based on informationreceived in the first PIAR trigger. The PIAR management applicationgenerates the title based on the PIAR trigger or the PIAR actionsindicated in the new PIAR.

In an embodiment, the PIAR management application determines whether thefirst PIAR action identifies any parameters for generating the new PIAR(Operation 208). If the first PIAR action identifies any parameters forgenerating the new PIAR, then the PIAR management application generatesthe new PIAR using the parameters specified by the first PIAR action(Operation 210). As an example, the first PIAR action may includemetadata for a PIAR trigger of the new PIAR. The metadata may indicateone or more triggers, one or more trigger types, a number of triggertypes, and/or condition metadata for determining whether or not the PIARtrigger of the new PIAR is satisfied. As another example, the first PIARaction may specify an action application which is to be used to performthe PIAR action, one or more action types available to a PIARapplication, and/or content data for enriching a PIAR action. As anexample, a PIAR action may specify a PIAR type “email welcome letter topotential client” without specifying the PIAR application (Gmail,Outlook, iCloud, an Internet Message Access Protocol (IMAP) request,etc.) that is to be used for completing the PIAR action. The PIARmanagement application may determine which email application(s) is/areavailable to a user of a user account associated with the PIAR action,and use any of the available email applications.

In an embodiment, the PIAR management application determines whether thefirst PIAR action references a PIAR template. As an example, the PIARmanagement application may receive a selection of one or more PIARtemplates to be used by the PIAR management application to create a newPIAR. One or more PIAR templates may be used to populate at least aportion of the new PIAR. For example, a PIAR template may be used topopulate one or more of: the PIAR name, the PIAR trigger, and/or thePIAR action. The PIAR management application may allow at least partialmodification to one or more of the PIAR name, the PIAR trigger, and/orthe PIAR action. Any restrictions to modification may be specified bythe PIAR template.

In an embodiment, the PIAR trigger of the new PIAR and the PIAR triggerof the first PIAR are concurrently monitored. Monitoring of the PIARtrigger of the new PIAR is initiated after creation of the new PIAR.Accordingly, prior to creation of the new PIAR, monitoring for the twoPIAR triggers was not concurrently executed.

FIG. 3 illustrates an example of recursively generating plug-inapplication recipes in accordance with one or more embodiments. Theillustrations in FIG. 3 are provided for exemplary purposes only andshould not be construed as limiting one or more embodiments.

In the example illustrated in FIG. 3, a PIAR 302 includes a trigger 304and an action 306. The action 306 involves generating another PIAR. Whena PIAR management application (not shown) detects that the trigger 304is satisfied, the PIAR management application executes the action 306 bygenerating a PIAR 308. PIAR 308 may be thought of as a “child” PIAR ofPIAR 302. PIAR 308 includes its own trigger 310 and action 312. If thetrigger 304 is satisfied again, the PIAR management application maygenerate another child PIAR (not shown). Depending on the trigger 304and/or any termination condition(s) associated with the PIAR 302, thePIAR management application may generate any number of child PIARs basedon the action 306.

In the example illustrated in FIG. 3, the child PIAR 308's action 312involves generating another PIAR. When the PIAR management applicationdetects that the trigger 310 is satisfied, the PIAR managementapplication executes the action 312 by generating a PIAR 314. PIAR 314may be thought of as a “child” PIAR of PIAR 308. PIAR 314 may also bethought of as a child, grandchild, or descendant of PIAR 302. PIAR 314includes its own trigger 316 and action 320. If the trigger 310 issatisfied again, the PIAR management application may generate anotherchild PIAR (not shown). Depending on the trigger 310 and/or anytermination condition(s) associated with the PIAR 308, the PIARmanagement application may generate any number of child PIARs based onthe action 312.

In the example illustrated in FIG. 3, the action 320 may or may not alsoinvolve generating another PIAR. The PIAR management application mayrecursively generate any number of “levels” or “generations” of childPIARs, if the actions of child PIARs involve generating additional childPIARs.

4. Miscellaneous; Extensions

Embodiments are directed to a system with one or more devices thatinclude a hardware processor and that are configured to perform any ofthe operations described herein and/or recited in any of the claimsbelow.

In an embodiment, a non-transitory computer readable storage mediumcomprises instructions which, when executed by one or more hardwareprocessors, causes performance of any of the operations described hereinand/or recited in any of the claims.

Any combination of the features and functionalities described herein maybe used in accordance with one or more embodiments. In the foregoingspecification, embodiments have been described with reference tonumerous specific details that may vary from implementation toimplementation. The specification and drawings are, accordingly, to beregarded in an illustrative rather than a restrictive sense. The soleand exclusive indicator of the scope of the invention, and what isintended by the applicants to be the scope of the invention, is theliteral and equivalent scope of the set of claims that issue from thisapplication, in the specific form in which such claims issue, includingany subsequent correction.

5. Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs), fieldprogrammable gate arrays (FPGAs), or network processing units (NPUs)that are persistently programmed to perform the techniques, or mayinclude one or more general purpose hardware processors programmed toperform the techniques pursuant to program instructions in firmware,memory, other storage, or a combination. Such special-purpose computingdevices may also combine custom hard-wired logic, ASICs, FPGAs, or NPUswith custom programming to accomplish the techniques. Thespecial-purpose computing devices may be desktop computer systems,portable computer systems, handheld devices, networking devices or anyother device that incorporates hard-wired and/or program logic toimplement the techniques.

For example, FIG. 4 is a block diagram that illustrates a computersystem 400 upon which an embodiment of the invention may be implemented.Computer system 400 includes a bus 402 or other communication mechanismfor communicating information, and a hardware processor 404 coupled withbus 402 for processing information. Hardware processor 404 may be, forexample, a general purpose microprocessor. Computer system 400 alsoincludes a main memory 406, such as a random access memory (RAM) orother dynamic storage device, coupled to bus 402 for storing informationand instructions to be executed by processor 404. Main memory 406 alsomay be used for storing temporary variables or other intermediateinformation during execution of instructions to be executed by processor404. Such instructions, when stored in non-transitory storage mediaaccessible to processor 404, render computer system 400 into aspecial-purpose machine that is customized to perform the operationsspecified in the instructions.

Computer system 400 further includes a read only memory (ROM) 408 orother static storage device coupled to bus 402 for storing staticinformation and instructions for processor 404. A storage device 410,such as a magnetic disk or optical disk, is provided and coupled to bus402 for storing information and instructions.

Computer system 400 may be coupled via bus 402 to a display 412, such asa cathode ray tube (CRT), for displaying information to a computer user.An input device 414, including alphanumeric and other keys, is coupledto bus 402 for communicating information and command selections toprocessor 404. Another type of user input device is cursor control 416,such as a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to processor 404 and forcontrolling cursor movement on display 412. This input device typicallyhas two degrees of freedom in two axes, a first axis (e.g., x) and asecond axis (e.g., y), that allows the device to specify positions in aplane.

Computer system 400 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 400 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 400 in response to processor 404 executing one or more sequencesof one or more instructions contained in main memory 406. Suchinstructions may be read into main memory 406 from another storagemedium, such as storage device 410. Execution of the sequences ofinstructions contained in main memory 406 causes processor 404 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperate in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical or magnetic disks, such as storage device 410.Volatile media includes dynamic memory, such as main memory 406. Commonforms of storage media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, and EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge,content-addressable memory (CAM), and ternary content-addressable memory(TCAM).

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 402. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 404 for execution. For example,the instructions may initially be carried on a magnetic disk or solidstate drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 400 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 402. Bus 402 carries the data tomain memory 406, from which processor 404 retrieves and executes theinstructions. The instructions received by main memory 406 mayoptionally be stored on storage device 410 either before or afterexecution by processor 404.

Computer system 400 also includes a communication interface 418 coupledto bus 402. Communication interface 418 provides a two-way datacommunication coupling to a network link 420 that is connected to alocal network 422. For example, communication interface 418 may be anintegrated services digital network (ISDN) card, cable modem, satellitemodem, or a modem to provide a data communication connection to acorresponding type of telephone line. As another example, communicationinterface 418 may be a local area network (LAN) card to provide a datacommunication connection to a compatible LAN. Wireless links may also beimplemented. In any such implementation, communication interface 418sends and receives electrical, electromagnetic or optical signals thatcarry digital data streams representing various types of information.

Network link 420 typically provides data communication through one ormore networks to other data devices. For example, network link 420 mayprovide a connection through local network 422 to a host computer 424 orto data equipment operated by an Internet Service Provider (ISP) 426.ISP 426 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 428. Local network 422 and Internet 428 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 420and through communication interface 418, which carry the digital data toand from computer system 400, are example forms of transmission media.

Computer system 400 can send messages and receive data, includingprogram code, through the network(s), network link 420 and communicationinterface 418. In the Internet example, a server 340 might transmit arequested code for an application program through Internet 428, ISP 426,local network 422 and communication interface 418.

The received code may be executed by processor 404 as it is received,and/or stored in storage device 410, or other non-volatile storage forlater execution. In the foregoing specification, embodiments of theinvention have been described with reference to numerous specificdetails that may vary from implementation to implementation. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense. The sole and exclusiveindicator of the scope of the invention, and what is intended by theapplicants to be the scope of the invention, is the literal andequivalent scope of the set of claims that issue from this application,in the specific form in which such claims issue, including anysubsequent correction.

6. Computer Networks and Cloud Networks

In one or more embodiments, a computer network provides connectivityamong a set of nodes. The nodes may be local to and/or remote from eachother. The nodes are connected by a set of links. Examples of linksinclude a coaxial cable, an unshielded twisted cable, a copper cable, anoptical fiber, and a virtual link.

A subset of nodes implements the computer network. Examples of suchnodes include a switch, a router, a firewall, and a network addresstranslator (NAT). Another subset of nodes uses the computer network.Such nodes (also referred to as “hosts”) may execute a client processand/or a server process. A client process makes a request for acomputing service (such as, execution of a particular application,and/or storage of a particular amount of data). A server processresponds by executing the requested service and/or returningcorresponding data.

A computer network may be a physical network, including physical nodesconnected by physical links. A physical node is any digital device. Aphysical node may be a function-specific hardware device, such as ahardware switch, a hardware router, a hardware firewall, and a hardwareNAT. Additionally or alternatively, a physical node may be a genericmachine that is configured to execute various virtual machines and/orapplications performing respective functions. A physical link is aphysical medium connecting two or more physical nodes. Examples of linksinclude a coaxial cable, an unshielded twisted cable, a copper cable,and an optical fiber.

A computer network may be an overlay network. An overlay network is alogical network implemented on top of another network (such as, aphysical network). Each node in an overlay network corresponds to arespective node in the underlying network. Hence, each node in anoverlay network is associated with both an overlay address (to addressto the overlay node) and an underlay address (to address the underlaynode that implements the overlay node). An overlay node may be a digitaldevice and/or a software process (such as, a virtual machine, anapplication instance, or a thread) A link that connects overlay nodes isimplemented as a tunnel through the underlying network. The overlaynodes at either end of the tunnel treat the underlying multi-hop pathbetween them as a single logical link. Tunneling is performed throughencapsulation and decapsulation.

In an embodiment, a client may be local to and/or remote from a computernetwork. The client may access the computer network over other computernetworks, such as a private network or the Internet. The client maycommunicate requests to the computer network using a communicationsprotocol, such as Hypertext Transfer Protocol (HTTP). The requests arecommunicated through an interface, such as a client interface (such as aweb browser), a program interface, or an application programminginterface (API).

In an embodiment, a computer network provides connectivity betweenclients and network resources. Network resources include hardware and/orsoftware configured to execute server processes. Examples of networkresources include a processor, a data storage, a virtual machine, acontainer, and/or a software application. Network resources are sharedamongst multiple clients. Clients request computing services from acomputer network independently of each other. Network resources aredynamically assigned to the requests and/or clients on an on-demandbasis. Network resources assigned to each request and/or client may bescaled up or down based on, for example, (a) the computing servicesrequested by a particular client, (b) the aggregated computing servicesrequested by a particular tenant, and/or (c) the aggregated computingservices requested of the computer network. Such a computer network maybe referred to as a “cloud network.”

In an embodiment, a service provider provides a cloud network to one ormore end users. Various service models may be implemented by the cloudnetwork, including but not limited to Software-as-a-Service (SaaS),Platform-as-a-Service (PaaS), and Infrastructure-as-a-Service (IaaS). InSaaS, a service provider provides end users the capability to use theservice provider's applications, which are executing on the networkresources. In PaaS, the service provider provides end users thecapability to deploy custom applications onto the network resources. Thecustom applications may be created using programming languages,libraries, services, and tools supported by the service provider. InIaaS, the service provider provides end users the capability toprovision processing, storage, networks, and other fundamental computingresources provided by the network resources. Any arbitrary applications,including an operating system, may be deployed on the network resources.

In an embodiment, various deployment models may be implemented by acomputer network, including but not limited to a private cloud, a publiccloud, and a hybrid cloud. In a private cloud, network resources areprovisioned for exclusive use by a particular group of one or moreentities (the term “entity” as used herein refers to a corporation,organization, person, or other entity). The network resources may belocal to and/or remote from the premises of the particular group ofentities. In a public cloud, cloud resources are provisioned formultiple entities that are independent from each other (also referred toas “tenants” or “customers”). The computer network and the networkresources thereof are accessed by clients corresponding to differenttenants. Such a computer network may be referred to as a “multi-tenantcomputer network.” Several tenants may use a same particular networkresource at different times and/or at the same time. The networkresources may be local to and/or remote from the premises of thetenants. In a hybrid cloud, a computer network comprises a private cloudand a public cloud. An interface between the private cloud and thepublic cloud allows for data and application portability. Data stored atthe private cloud and data stored at the public cloud may be exchangedthrough the interface. Applications implemented at the private cloud andapplications implemented at the public cloud may have dependencies oneach other. A call from an application at the private cloud to anapplication at the public cloud (and vice versa) may be executed throughthe interface.

In an embodiment, tenants of a multi-tenant computer network areindependent of each other. For example, a business or operation of onetenant may be separate from a business or operation of another tenant.Different tenants may demand different network requirements for thecomputer network. Examples of network requirements include processingspeed, amount of data storage, security requirements, performancerequirements, throughput requirements, latency requirements, resiliencyrequirements, Quality of Service (QoS) requirements, tenant isolation,and/or consistency. The same computer network may need to implementdifferent network requirements demanded by different tenants.

In one or more embodiments, in a multi-tenant computer network, tenantisolation is implemented to ensure that the applications and/or data ofdifferent tenants are not shared with each other. Various tenantisolation approaches may be used.

In an embodiment, each tenant is associated with a tenant ID. Eachnetwork resource of the multi-tenant computer network is tagged with atenant ID. A tenant is permitted access to a particular network resourceonly if the tenant and the particular network resources are associatedwith a same tenant ID.

In an embodiment, each tenant is associated with a tenant ID. Eachapplication, implemented by the computer network, is tagged with atenant ID. Additionally or alternatively, each data structure and/ordataset, stored by the computer network, is tagged with a tenant ID. Atenant is permitted access to a particular application, data structure,and/or dataset only if the tenant and the particular application, datastructure, and/or dataset are associated with a same tenant ID.

As an example, each database implemented by a multi-tenant computernetwork may be tagged with a tenant ID. Only a tenant associated withthe corresponding tenant ID may access data of a particular database. Asanother example, each entry in a database implemented by a multi-tenantcomputer network may be tagged with a tenant ID. Only a tenantassociated with the corresponding tenant ID may access data of aparticular entry. However, the database may be shared by multipletenants.

In an embodiment, a subscription list indicates which tenants haveauthorization to access which applications. For each application, a listof tenant IDs of tenants authorized to access the application is stored.A tenant is permitted access to a particular application only if thetenant ID of the tenant is included in the subscription listcorresponding to the particular application.

In an embodiment, network resources (such as digital devices, virtualmachines, application instances, and threads) corresponding to differenttenants are isolated to tenant-specific overlay networks maintained bythe multi-tenant computer network. As an example, packets from anysource device in a tenant overlay network may only be transmitted toother devices within the same tenant overlay network. Encapsulationtunnels are used to prohibit any transmissions from a source device on atenant overlay network to devices in other tenant overlay networks.Specifically, the packets, received from the source device, areencapsulated within an outer packet. The outer packet is transmittedfrom a first encapsulation tunnel endpoint (in communication with thesource device in the tenant overlay network) to a second encapsulationtunnel endpoint (in communication with the destination device in thetenant overlay network). The second encapsulation tunnel endpointdecapsulates the outer packet to obtain the original packet transmittedby the source device. The original packet is transmitted from the secondencapsulation tunnel endpoint to the destination device in the sameparticular overlay network.

The invention claimed is:
 1. A non-transitory computer readable mediumcomprising instructions which, when executed by one or more hardwareprocessors, causes performance of operations comprising: managing, by aplug-in application recipe (PIAR) management application, a particularPIAR in an active state, wherein the PIAR management application managesPIAR specifications, each PIAR specification identifying (a) a triggerfor which one or more trigger variables, values of which are necessaryto evaluate the trigger on an ongoing basis, are exposed by a firstplug-in application to the PIAR management application, wherein aninstance of evaluating the trigger comprises determining whether acondition is satisfied based at least in part on one or more values ofthe one or more trigger variables, and (b) an action for which a secondplug-in application exposes an interface to the PIAR managementapplication for causing the second plug-in application to carry out theaction, wherein an instance of evaluating the action comprises carryingout the action based on one or more values of one or more inputvariables that are input to the action in the PIAR specification,wherein the PIAR management application makes the action conditional onthe trigger on an ongoing basis, wherein the particular PIAR comprises aparticular trigger and a particular action, wherein the particularaction comprises a child PIAR specification that defines, for a childPIAR, a second trigger and a second action to be executed when thesecond trigger is satisfied; detecting, by the PIAR managementapplication that the particular trigger is satisfied; and in response todetecting that the particular trigger is satisfied, creating the childPIAR, wherein the PIAR management application monitors the secondtrigger concurrently with the particular trigger, wherein the PIARmanagement application did not monitor the second trigger beforecreating the child PIAR.
 2. The medium of claim 1, wherein theoperations further comprise, prior to detecting that the particulartrigger is satisfied: receiving, by the PIAR management application viaa graphical user interface provided by the PIAR management application,an initial PIAR specification defining (a) the particular trigger and(b) the particular action; and configuring, by the PIAR managementapplication, a monitoring operation to detect one or more conditionsbased on the particular trigger from the initial PIAR specification. 3.The medium of claim 2, wherein configuring the monitoring operationcomprises configuring, based at least in part on a first interfaceexposed by the first plug-in application, a service to monitor the firstplug-in application to determine whether the first plug-in applicationperforms an operation corresponding to the particular trigger.
 4. Themedium of any claim 1, wherein the first plug-in application and thesecond plug-in application operate independently of each other andindependently of the PIAR management application.
 5. The medium of claim1, wherein the operations further comprise, prior to detecting that theparticular trigger is satisfied: linking the first plug-in applicationto the PIAR management application based at least in part onauthentication credentials received via a graphical user interfaceprovided by the PIAR management application, wherein the authenticationcredentials are associated with a particular user account of a pluralityof user accounts managed by the first plug-in application.
 6. The mediumof claim 5, wherein the linking comprises storing the authenticationcredentials for use in polling the first plug-in application for data.7. The medium of claim 5, wherein the linking comprises establishing asecure reusable data pipe for receiving data from the first plug-inapplication.
 8. The medium of claim 1, wherein creating the child PIARcomprises: using, by the PIAR management application, a representationalstate transfer (REST) Application Programming Interface (API) to createthe child PIAR in accordance with the child PIAR specification.
 9. Themedium of claim 1, wherein the operations further comprise, prior todetecting that the particular trigger is satisfied: receiving, via agraphical user interface provided by the PIAR management application, anative PIAR specification for creating the child PIAR, wherein thenative PIAR specification is stored, in a PIAR repository, as the childPIAR and is executable as the child PIAR by the PIAR management system.10. The medium of claim 1, wherein the operations further comprise,prior to detecting that the particular trigger is satisfied: receiving,by a graphical user interface provided by the PIAR managementapplication, a native title of the child PIAR, wherein the child PIAR isstored, in a PIAR repository, using the native title.
 11. The medium ofclaim 1, wherein the operations further comprise, prior to detectingthat the particular trigger is satisfied: receiving, by a graphical userinterface provided by the PIAR management application, a selection toautomatically generate a title of the child PIAR, wherein creating thechild PIAR comprises storing the child PIAR using a title automaticallygenerated based at least in part on the second trigger and/or the secondaction.
 12. The medium of claim 1, wherein the operations furthercomprise, prior to detecting that the particular trigger is satisfied:receiving, by a graphical user interface provided by the PIAR managementapplication, PIAR trigger metadata that indicates, for the child PIAR: aPIAR trigger application from which data is needed to satisfy the secondtrigger, a trigger type of one or more trigger types available for thePIAR application, and/or condition metadata for determining whether ornot the second trigger is satisfied.
 13. The medium of claim 1, whereinthe operations further comprise, prior to detecting that the particulartrigger is satisfied: receiving, by a graphical user interface providedby the PIAR management application, PIAR action metadata that indicates,for the child PIAR: a PIAR action application on which the second actionis to be performed, an action type of one or more action types availablefor the PIAR application, and/or content metadata for enriching thesecond action.
 14. The medium of claim 1, wherein the operations furthercomprise, prior to detecting that the particular trigger is satisfied:receiving, by a graphical user interface provided by the PIAR managementapplication, a selection of one or more PIAR templates to be used by thePIAR management application to create the child PIAR, wherein the one ormore PIAR templates populate at least part of a PIAR name, the secondtrigger, and/or the second action, and allow at least partialmodification to at least part of the PIAR name, the second trigger,and/or the second action.
 15. The medium of claim 1, wherein the PIARmanagement application stores PIAR specifications in a PIAR repositorythat is accessible via a particular authenticated account of the PIARmanagement application.
 16. The medium of claim 1, wherein the secondaction comprises another child PIAR specification that defines, for theother child PIAR, a third trigger and a third action to be executed whenthe third trigger is satisfied, and wherein the operations furthercomprise: detecting that the second trigger is satisfied; and inresponse to detecting that the second trigger is satisfied: creating theother child PIAR.
 17. The medium of claim 1, wherein the child PIAR isassociated with a start condition that is not satisfied at the time thechild PIAR is created, and wherein the PIAR management applicationbegins monitoring the second trigger when the start condition issatisfied.
 18. The medium of claim 1, wherein the child PIAR isassociated with a termination condition, and wherein the PIAR managementapplication stops monitoring the second trigger when the terminationcondition is satisfied.
 19. A method comprising: managing, by a plug-inapplication recipe (PIAR) management application, a particular PIAR inan active state, wherein the PIAR management application manages PIARspecifications, each PIAR specification identifying (c) a trigger forwhich one or more trigger variables, values of which are necessary toevaluate the trigger on an ongoing basis, are exposed by a first plug-inapplication to the PIAR management application, wherein an instance ofevaluating the trigger comprises determining whether a condition issatisfied based at least in part on one or more values of the one ormore trigger variables, and (d) an action for which a second plug-inapplication exposes an interface to the PIAR management application forcausing the second plug-in application to carry out the action, whereinan instance of evaluating the action comprises carrying out the actionbased on one or more values of one or more input variables that areinput to the action in the PIAR specification, wherein the PIARmanagement application makes the action conditional on the trigger on anongoing basis, wherein the particular PIAR comprises a particulartrigger and a particular action, wherein the particular action comprisesa child PIAR specification that defines, for a child PIAR, a secondtrigger and a second action to be executed when the second trigger issatisfied; detecting, by the PIAR management application that theparticular trigger is satisfied; and in response to detecting that theparticular trigger is satisfied, creating the child PIAR, wherein thePIAR management application monitors the second trigger concurrentlywith the particular trigger, wherein the PIAR management application didnot monitor the second trigger before creating the child PIAR, whereinthe method is performed by at least one device comprising a hardwareprocessor.
 20. A system comprising: one or more hardware processors; andone or more non-transitory computer-readable media storing instructions,which when executed by the one or more hardware processors, causeexecution of operations comprising: managing, by a plug-in applicationrecipe (PIAR) management application, a particular PIAR in an activestate, wherein the PIAR management application manages PIARspecifications, each PIAR specification identifying (e) a trigger forwhich one or more trigger variables, values of which are necessary toevaluate the trigger on an ongoing basis, are exposed by a first plug-inapplication to the PIAR management application, wherein an instance ofevaluating the trigger comprises determining whether a condition issatisfied based at least in part on one or more values of the one ormore trigger variables, and (f) an action for which a second plug-inapplication exposes an interface to the PIAR management application forcausing the second plug-in application to carry out the action, whereinan instance of evaluating the action comprises carrying out the actionbased on one or more values of one or more input variables that areinput to the action in the PIAR specification, wherein the PIARmanagement application makes the action conditional on the trigger on anongoing basis, wherein the particular PIAR comprises a particulartrigger and a particular action, wherein the particular action comprisesa child PIAR specification that defines, for a child PIAR, a secondtrigger and a second action to be executed when the second trigger issatisfied; detecting, by the PIAR management application that theparticular trigger is satisfied; and in response to detecting that theparticular trigger is satisfied, creating the child PIAR, wherein thePIAR management application monitors the second trigger concurrentlywith the particular trigger, wherein the PIAR management application didnot monitor the second trigger before creating the child PIAR.